"""
使用bs4解析数据
1.构造bs4对象
2.搜索节点
   1）通过find_all、find等操作方法搜索节点
   2）通过css选择器搜索
3.获取节点内容
   get_text()
"""

#1.利用request爬取百度首页，保存在文件baidu.html中
#爬取网页:1)是否需要登录才能爬取(可以通过cookie和session实现)
#        2)get请求还是post请求(post请求需要请求体数据)
import requests
from bs4 import BeautifulSoup

url='https://www.baidu.com/'
#构造字典(请求头)
h={
   'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36'
}
#get请求:url,包含User-Agent
r=requests.get(url,headers=h)
#将数据写入文件

with open('baidu.html','w',encoding='utf-8') as f:
    f.write(r.content.decode())

#2.利用bs4解析baidu.html文件
#1)构造bs4对象,参数1:要解析的文本 参数2:解析器

soup=BeautifulSoup(r.content.decode(),'lxml')
#2)利用find_all、find方法搜索节点
#  搜索文本中所有的a标签
print('--------搜索所有a标签--------')
result1=soup.find_all('a')
print(result1)

print('--------搜索第一个a标签--------')
result2=soup.find('a')
print(result2)

print('--------搜索所有a标签和img标签,结果保留3条记录--------')
result3=soup.find_all(['a','img'],limit=3)
print(result3)

print('--------搜索所有a标签,以及特殊属性值--------')
result4=soup.find_all('a',{'class':'mnav c-font-normal c-color-t'})
# print(result4)
for i in result4:
    print(i)

#2)利用css选择器搜索
print('--------利用select搜索title标签--------')
r1=soup.select('title')
print(r1)

print('--------利用select搜索标签名为li类名为hotsearch-item--------')
r2=soup.select('li.hotsearch-item')
for i in r2:
    print(i.get_text())